﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Erau.ERBParser
{
	public static class Parser
	{
		public static InstructionLine ParseLine(StringBuffer buf, ScriptFunction function, ScriptPosition pos)
		{
			// 공백으로 구분되는 첫 토큰이 명령어 타입을 결정함.
			string firstToken = buf.GetToken(' ');

			//첫 토큰이 VAR이면 대입이지만, 일단 사용하지 않음.

			switch (firstToken)
			{
				case "CALL": return new CallInstructionLine(buf, function, pos); //첫 토큰이 CALL이면 함수호출 명령 라인.
				case "RETURN": return new CallInstructionLine(buf, function, pos); //첫 토큰이 RETURN이면 리턴 명령 라인.
				//case "VAR" : break;
				//첫 토큰이 IF면 
				//첫 토큰이 ELSE면
				//ELSEIF,
				//ENDIF,	
				//FOR,		// FOR 반복 제어구문의 시작
				//NEXT,		// FOR 구문의 끝.
				//BREAK,		// IF나 FOR 제어구문을 빠져나감. 즉 ENDIF나 NEXT 위치로 이동.

				default:
					return new SetInstructionLine(buf); //그 외의 경우는 SET으로 취급.
			}
		}
	}
}
